package com.dvdfe8.crochet.modelo.entity;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.springframework.format.annotation.DateTimeFormat;

@Entity
@Table(name = "PEDIDO")
public class Pedido implements Serializable {

    @Id
    @GeneratedValue
    @Column(name = "PEDIDO_ID")
    private int id;

    @Column(name = "F_PEDIDO")
    @DateTimeFormat(pattern = "dd/MM/yyyy")
    private Date fechaPedido;

    @Column(name = "F_ENTREGA")
    @DateTimeFormat(pattern = "dd/MM/yyyy")
    private Date fechaEntrega;

    @Column(name = "F_ENTREGADO")
    @DateTimeFormat(pattern = "dd/MM/yyyy")
    private Date fechaEntregado;

    @Column(name = "activo")
    private boolean activo;

    @Column(name = "pagado")
    private boolean pagado;

    @Column(name = "ENTREGADO")
    private boolean entregado;

    @Column(name = "NUM_MUNECOS")
    private int numMunecos;

    @Column(name = "HECHOS")
    private int hechos;

    @Column(name = "TOTAL")
    private float total;

    @OneToMany(mappedBy = "pedido", fetch=FetchType.EAGER)
    private Collection<Linea> lineas = new ArrayList<Linea>();

    @ManyToOne
    @JoinColumn(name = "CLIENTE_ID")
    private Cliente cliente;

    @Transient
    private int idCliente;    

    public Pedido() {

        this.fechaPedido = new Date(System.currentTimeMillis());
        this.fechaEntrega = new Date(System.currentTimeMillis());
        this.fechaEntregado = new Date(System.currentTimeMillis());
        this.activo = true;

    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public Date getFechaPedido() {
        return fechaPedido;
    }

    public void setFechaPedido(Date fechaPedido) {
        this.fechaPedido = fechaPedido;
    }

    public Date getFechaEntrega() {
        return fechaEntrega;
    }

    public void setFechaEntrega(Date fechaEntrega) {
        this.fechaEntrega = fechaEntrega;
    }

    public Date getFechaEntregado() {
        return fechaEntregado;
    }

    public void setFechaEntregado(Date fechaEntregado) {
        this.fechaEntregado = fechaEntregado;
    }

    public boolean isActivo() {
        return activo;
    }

    public void setActivo(boolean activo) {
        this.activo = activo;
    }

    public boolean isPagado() {
        return pagado;
    }

    public void setPagado(boolean pagado) {
        this.pagado = pagado;
    }

    public boolean isEntregado() {
        return entregado;
    }

    public void setEntregado(boolean entregado) {
        this.entregado = entregado;
    }

    public int getNumMunecos() {
        return numMunecos;
    }

    public void setNumMunecos(int numMunecos) {
        this.numMunecos = numMunecos;
    }

    public int getHechos() {
        return hechos;
    }

    public void setHechos(int hechos) {
        this.hechos = hechos;
    }

    public float getTotal() {
        return total;
    }

    public void setTotal(float total) {
        this.total = total;
    }

    public Collection<Linea> getLineas() {
        return lineas;
    }

    public void setLineas(ArrayList<Linea> lineas) {
        this.lineas = lineas;
    }

    public int getIdCliente() {
        return idCliente;
    }

    public void setIdCliente(int idCliente) {
        this.idCliente = idCliente;
    }
    
    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }
    
    public void agregarLinea(Linea linea){
        this.lineas.add(linea);
    }
    
}
